#include <stdio.h>
//实现顺序栈
#define MAXSIZE 10 //定义数组的长度

typedef int ElementType;
typedef struct {
    //1.定义一个数组，用来存放数据
    ElementType data[MAXSIZE];
    //2.定义一个变量，用来指向数组的最后一位的下标值
    int top;//代表栈顶，指向栈顶元素的下标值
}SeqStack;

//1.初始化
/*
 * 作用：创建一个栈，给栈的一些参数赋值
 * 函数名：InintStack()
 * 输入：无
 * 输出：返回栈
 * */
SeqStack InitStack(){
    //1.创建一个空栈
    SeqStack stack;
    //2.给栈的一些固有参数赋初始值
    stack.top=-1;//此时是空的

}
//2.进栈
/*
 * 函数名：Push()
 * 输入：栈 元素
 * 输出：int
 *
 * */
//进栈 如果栈未满，进行进栈的操作
int Push(SeqStack *stack,ElementType data){
    if(stack->top>=MAXSIZE-1){
        printf("栈已满，无法继续进行进栈操作\n");
        return 0;

    }
    //进栈，将元素赋值到下一个数组坐标位置
    //1.下标值后移
    stack->top++;
    //2.进行赋值
    stack->data[stack->top]=data;
    return 1;
}

//3.出栈
/*
 * 函数名：Pop
 * 输入：栈
 * 输出：int / elementype
 *
 * */

int Pop(SeqStack *stack){
    //栈不为空，进行出栈操作
    if(stack->top!=-1){
        return stack->data[stack->top--];//返回了删除的栈顶元素
    }
    return 0;//代表删除不成功
}
int main() {
    SeqStack stack = InitStack();
    //2.给栈赋值
    ElementType data;
    int length =5;
    printf("请输入%d个整数",length);
    for (int i = 0; i < length; ++i) {
        scanf("%d",&data);
        Push(&stack,data);
    }
    Pop(&stack);
   // printf("Hello, World!\n");
    return 0;
}
